Programmable controllers are typically connected to industrial equipment such as assembly lines and machine tools to sequentially operate the equipment in accordance with a stored program. In programmable controllers such as those disclosed in the above cited patents, for example, the control program is stored in a memory and includes instructions which are read out in rapid sequence and executed to examine the condition of selected sensing devices on the controlled equipment, or to energize or de-energize selected operating devices on the controlled equipment contingent upon the status of one or more of the examined sensing devices.
Large programmable controllers consist of a number of modules with different functions assigned to each module. For example, one module may execute the user control program, another may interface the controller to the remote sensing and operating devices, and yet another module may control communications with a host computer via a local area network. The modules are typically housed in a rack and are interconnected by a series of buses on the backplane of the rack.
During the execution of the control programs, data is exchanged between modules within the programmable controller by sending addresses and control signals over the backplane buses. A previous technique for exchanging this data is described in U.S. Pat. No. 4,442,504 entitled "Modular Programmable Controller." In this technique a set of module status blocks was stored in a central memory module for the controller. When one module sought to send a message to another module, the sending module created a message parameter block in its memory containing the address of the message, its length and other parameters needed for the recipient to obtain and process the message. The sending module then accessed the central memory and stored the address of the parameter block and an identification of the sender in the status block for the recipient module.
The recipient module then was sent an interrupt indicating that a message was waiting. In response thereto the recipient module accessed the central memory and read the information from its status block. The recipient module then read the parameter block from the sending module's memory and used the parameters to obtain the message.
This technique worked well for programmable controllers with a single processor module. However, a controller has been developed which has several processor modules capable of simultaneously executing user control programs. In this system more data is exchanged over the backplane and access time to the backplane is more valuable. The previous message communication technique required numerous backplane accesses to transfer the message.